﻿

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crosland.Automotriz.Data.Dao.Linq;
using Crosland.Automotriz.Core;
using Crosland.Automotriz.Entidad;
using Crosland.Automotriz.Logic.ControlExeption;
using System.Data.SqlClient;
namespace Crosland.Automotriz.Logic.Linq
{
    public class clsTh_Procesoabc_DetLogic
    {
        clsTh_Procesoabc_DetDAO clsTh_procesoAbcDetDao = new clsTh_Procesoabc_DetDAO();

        public List<TH_PROCESOABC_DET> listar(int num_proc)
        {
            List<TH_PROCESOABC_DET> lista = new List<TH_PROCESOABC_DET>();
            try
            {
                var q = from c in clsTh_procesoAbcDetDao.listar()
                        where c.NUM_PROC == num_proc
                        select c;
                lista = q.ToList();

            }
            catch (Exception)
            {
            }
            return lista;

        }

        public List<procesoABC> listTh_Procesarabc_Det(int nro_proceso, String idMarca, string desGrupo)
        {
            try
            {
                return clsTh_procesoAbcDetDao.listTh_Procesarabc_Det(nro_proceso, idMarca, desGrupo);
            }
            catch (SqlException sqlEx) { throw new RunException("ERROR EN EL PROCEDIMIENTO listTh_Procesarabc_Det", sqlEx); }
            catch (Exception ex) { throw new RunException("ERROR EN LA APLICACION POR FAVOR CONSULTE: ", ex); }


        }


        public bool deleteTh_proceso_abc_det(int nro_proceso)
        {

            return clsTh_procesoAbcDetDao.deleteTh_proceso_abc_det(nro_proceso);
        }

        public List<TD_CANTIDADES_ABC> TotalABCValorizado(int idCab, String idMarca, string desGrupo)
        {
            try
            {
                return clsTh_procesoAbcDetDao.TotalABCValorizado(idCab, idMarca, desGrupo);
            }
            catch (SqlException sqlEx) { throw new RunException("ERROR EN EL PROCEDIMIENTO TotalABCValorizado", sqlEx); }
            catch (Exception ex) { throw new RunException("ERROR EN LA APLICACION POR FAVOR CONSULTE: ", ex); }
        }

        public List<TD_CANTIDADES_ABC> TotalABCCantidades(int idCab, String idMarca, string desGrupo)
        {
            try
            {
                return clsTh_procesoAbcDetDao.TotalABCCantidades(idCab, idMarca, desGrupo);
            }
            catch (SqlException sqlEx) { throw new RunException("ERROR EN EL PROCEDIMIENTO TotalABCCantidades", sqlEx); }
            catch (Exception ex) { throw new RunException("ERROR EN LA APLICACION POR FAVOR CONSULTE: ", ex); }
        }

        public IEnumerable<Object> ListarTipo(int id_inventario_cab)
        {
            try
            {
                return clsTh_procesoAbcDetDao.ListarTipo(id_inventario_cab);
            }
            catch (SqlException sqlEx) { throw new RunException("ERROR EN EL PROCEDIMIENTO ListarTipo", sqlEx); }
            catch (Exception ex) { throw new RunException("ERROR EN LA APLICACION POR FAVOR CONSULTE: ", ex); }

        }



        public List<TD_GRUPO_ARTICULO_EN> listaGrupoArticulo(int id_cab, String Des_sup)
        {
            return clsTh_procesoAbcDetDao.listaGrupoArticulo(id_cab, Des_sup);

        }
        public List<TD_MARCA_EN> listaMarcaPorIdGrupoArticulo(int id_cab, String id_grupo_Articulos)
        {

            return clsTh_procesoAbcDetDao.listaMarcaPorIdGrupoArticulo(id_cab, id_grupo_Articulos);
        }
        public IEnumerable<Object> ListarMarca()
        {
            try
            {
                return clsTh_procesoAbcDetDao.ListarMarca();
            }
            catch (SqlException sqlEx) { throw new RunException("ERROR EN EL PROCEDIMIENTO ListarMarca", sqlEx); }
            catch (Exception ex) { throw new RunException("ERROR EN LA APLICACION POR FAVOR CONSULTE: ", ex); }

        }

        public bool AnularProcesoABC(int idCab)
        {
            try
            {
                return clsTh_procesoAbcDetDao.AnularProcesoABC(idCab);

            }
            catch (SqlException e)
            {
                throw new DataException("No se ha podido anular el proceso abc (USP_ANULAR_PROCESO_ABC)", e);
            }
            catch (Exception e)
            {
                throw new RunException("Error grabe en la aplicación a intentar eliminar el  proceso ABC", e);
            }

        }
    }
}
